-- 定义键名用于存储请求时间戳
local request_key = "requests"

-- 获取当前时间戳，精确到毫秒
local current_time = redis.call("TIME")
local millisecond_timestamp = tonumber(current_time[1]) * 1000 + math.floor(tonumber(current_time[2]) / 1000)

-- 将当前请求的时间戳添加到Sorted Set中
redis.call("ZADD", request_key, millisecond_timestamp, millisecond_timestamp)

-- 计算一秒钟前的时间戳
local one_second_ago = millisecond_timestamp - 1000

-- 获取从一秒钟前到现在所有请求的数量
local request_count = redis.call("ZCOUNT", request_key, one_second_ago, millisecond_timestamp)

-- 删除超过一秒钟的老请求
redis.call("ZREMRANGEBYSCORE", request_key, "-inf", one_second_ago)

-- 返回最近一秒内的请求数量
return request_count

-- 返回当前每秒并发数lua脚本